package dream

import (
	"os"
	"path/filepath"
	"strings"
)

func PathCheckEndChar(path string, add bool) (string, bool) {
	i := strings.LastIndex(path, "/")
	if i < 0 {
		i = strings.LastIndex(path, "\\")
	}
	if add {
		if i < len(path)-1 {
			return path + "/", true
		}
	} else {
		if i == len(path)-1 {
			return path[0:i], true
		}
	}
	return path, false
}

func GetCurrentPath() string {
	file, err := os.Getwd()
	if err != nil {
		return ""
	}
	path, err := filepath.Abs(file)
	if err != nil {
		return ""
	}
	i := strings.LastIndex(path, "/src")
	if i < 0 {
		i = strings.LastIndex(path, "\\src")
	}
	if i < 0 {
		if path[len(path)-1] != '/' && path[len(path)-1] != '\\' {
			return path + "/"
		}
		return path
	}
	return string(path[0 : i+1])
	// file, err := exec.LookPath(os.Args[0])
	// if err != nil {
	// 	return ""
	// }
	// path, err := filepath.Abs(file)
	// if err != nil {
	// 	return ""
	// }
	// i := strings.LastIndex(path, "/")
	// if i < 0 {
	// 	i = strings.LastIndex(path, "\\")
	// }
	// if i < 0 {
	// 	return ""
	// }
	// return string(path[0 : i+1])
}

func IsFullPath(path string) bool {
	if len(path) >= 1 && (path[0] == '/' || path[0] == '\\') {
		return true
	} else if len(path) >= 3 && path[1] == ':' {
		return true
	}
	return false
}

func IsFileIsExist(filename string) bool {
	var exist = true
	if _, err := os.Stat(filename); os.IsNotExist(err) {
		exist = false
	}
	return exist
}

var appName string

func AppName() string {
	if appName != "" {
		return appName
	}
	return strings.TrimRight(filepath.Base(os.Args[0]), filepath.Ext(os.Args[0]))
}

func SetAppName(n string) {
	Assert(len(appName) == 0, "SetAppName not nil")
	appName = n
}
